
#pragma once

namespace FlameEngine
{
	//uint: unsigned integer
	//sint: signed integer
	//unorm: unsigned normalized 
	enum DataFormat:uint16_t
	{
		df_uint8,
		df_int8,
		df_uint16,
		df_int16,
		df_uint32,
		df_int32,
		df_uint64,
		df_int64,
		df_uint128,
		df_int128,
		df_float,
		df_double,
		df_string,

		df_rgba32Typeless,
		df_rgba32Float,
		df_rgba32Uint,
		df_rgba32Sint,

		df_rgb32Typeless,
		df_rgb32Float,
		df_rgb32Uint,
		df_rgb32Sint,
		
		df_rgba16Typeless,
		df_rgba16Float,
		df_rgba16Unorm,
		df_rgba16Snorm,
		df_rgba16Uint,
		df_rgba16Sint,

		df_rg32Typeless,
		df_rg32Float,
		df_rg32Uint,
		df_rg32Sint,

		df_r10g10b10a2Typeless,
		df_r10g10b10a2Unorm,
		df_r10g10b10a2Uint,

		df_r11g11b10Float,

		df_rgba8Typeless,
		df_rgba8Unorm,
		df_rgba8UnormSrgb,
		df_rgba8Uint,
		df_rgba8Snorm,
		df_rgbaSint,

		df_rg16Typeless,
		df_rg16Float,
		df_rg16Unorm,
		df_rg16Snorm,
		df_rg16Uint,
		df_rg16Sint,

		df_r32Typeless,
		df_d32Float,
		df_r32Float,
		df_r32Uint,
		df_r32sint,

		df_r24g8Typless,
		df_d24UnormS8Uint,
		df_r24UnormX8Typeless,
		df_x24TypelessG8Uint,

		df_r16Typelss,
		df_r16Float,
		df_d16Unorm,
		df_r16Unorm,
		df_r16Snorm,
		df_r16Uint,
		df_r16Sint,

		df_r8Typless,
		df_r8Unorm,
		df_r8Uint,
		df_r8Sint,
		df_r8Snorm,
		df_a8Unorm,

		df_bc1Typeless,
		df_bc1unorm,
		df_bc1NormSrgb,
		
		df_bc2Typeless,
		df_bc2Unorm,
		df_bc2UnormSrgb,

		df_bc3Typeless,
		df_bc3Unorm,
		df_bc3UnormSrgb,

		df_bc4Typeless,
		df_bc4Unorm,
		df_bc4UnormSrgb,

		df_bc5Typeless,
		df_bc5Unorm,
		df_bc5UnormSrgb,

		df_bc5Typeless,
		df_bc5Unorm,
		df_bc5UnormSrgb,

		df_bc6HTypeless,
		df_bc6HUF16,
		df_bc6HSF16,

		df_bc7Typeless,
		df_bc7Unorm,
		df_bc7UnormSrgb,

		df_lastDataFormat,
	};
}